# makefile voor unix/linux
#
# eerst een heleboel instellingen regelen
# pas op, sommige regels *moeten* met een TAB beginnen.
#
# --- standaard tekst, advies=afblijven ---
# welke C/C++ compiler we gebruiken
# de -g optie zegt: voeg extra informatie toe
# voor de gdb/ddd debugger.
WARNINGS= -Wall -Wextra
CC	= gcc -g $(WARNINGS)
CCC	= g++ -g $(WARNINGS)
CXX	= g++ -g $(WARNINGS)
# --------------------------------------------

# Uit welke source files bestaat het programma.
# Dit moet je uitbreiden/veranderen voor jouw programma.
SOURCES.h	= asserts.h Area.h Allocator.h \
	RandomFit.h
SOURCES.c	= asserts.c 
SOURCES.cc	= Main.cc Area.cc Allocator.cc \
	RandomFit.cc
# PAS OP: elke "verleng-regel" MOET met minstens 1 een TAB beginnen;
# resterende "wit-ruimte" maakt niet uit.
#
# -lefence voegt de memory waakhond toe.
LIBS		= -lefence

# De gewenste naam van het programma
PROGRAM		= memtest


# ---- standaard tekst: advies afblijven ---
#
# dit laat 'make' zelf de namen van de .o files bedenken
OBJECTS	= $(SOURCES.c:.c=.o) $(SOURCES.cc:.cc=.o)


# --- de productie doelen zijn ... ---
#
# wat 'make' gaat maken als je alleen 'make' in tikt
MAIN	: $(PROGRAM)

# het gewenste programma wordt opgebouwd uit ...
$(PROGRAM)	: $(OBJECTS)
	$(LINK.cc) -o $(PROGRAM) $(OBJECTS)

# nu wat make tovenarij
clean	:	# opruimen
	-rm -f $(OBJECTS)
realclean:	clean
	-rm -f $(PROGRAM) _deps

deps	: _deps		# "make deps" laat _deps maken

# laat de c compiler de "dependencies" uitzoeken
_deps	: $(SOURCES.h) $(SOURCES.c) $(SOURCES.cc)
	$(CC) -MM $(SOURCES.c) $(SOURCES.cc)> _deps
# en gebruik die dan weer hier
include _deps

# Voetnoot: In het begin hebben we een kip-ei situatie.
# De 'makefile' heeft '_deps' nodig, maar om '_deps' te
# maken hebben we een werkende 'makefile' nodig.
# GNU-make is slim genoeg om dit zelf op te lossen.
# Voor het geval dat ...
# Maak eerst een lege _deps file (b.v. touch _deps)
# Maak daarna de source "nieuwer" (b.v. touch Main.cc)
